package com.itheima.d7_collection_nesting;

import java.util.*;
import java.util.function.BiConsumer;

/**
 * 目标：理解集合的嵌套。
 *      指的是集合中的元素又是一个集合
 *
 *      HashMap:元素按照键是无序，不重复，无索引，值不做要求，基于哈希表（与Map体系一致）
 *      LinkedHashMap:元素按照键是有序，不重复，无索引，值不做要求，基于哈希表
 *      TreeMap：元素只能按照键排序，不重复，无索引的，值不做要求，可以做排序
 *
 *
 * 江苏省 = "南京市","扬州市","苏州市“,"无锡市","常州市"
 * 湖北省 = "武汉市","孝感市","十堰市","宜昌市","鄂州市"
 * 河北省 = "石家庄市","唐山市", "邢台市", "保定市", "张家口市"
 *  分析：键值对类型，用map。每个省份有多个城市，也可以用一个集合来存储,又因为是记住单个的值和顺序所以用list集合
 */
public class Test {
    public static void main(String[] args) {
        // 1、定义一个Map集合存储全部的省份信息，和其对应的城市信息。
        Map<String, List<String>> map = new HashMap<>();

        List<String> cities1 = new ArrayList<>();
        Collections.addAll(cities1, "南京市","扬州市","苏州市" ,"无锡市","常州市");
        map.put("江苏省", cities1);

        List<String> cities2 = new ArrayList<>();
        Collections.addAll(cities2, "武汉市","孝感市","十堰市","宜昌市","鄂州市");
        map.put("湖北省", cities2);

        List<String> cities3 = new ArrayList<>();
        Collections.addAll(cities3, "石家庄市","唐山市", "邢台市", "保定市", "张家口市");
        map.put("河北省", cities3);
        System.out.println(map);

        System.out.println("---------增强for循环遍历湖北省的list---------------");
        List<String> cities = map.get("湖北省");
        for (String city : cities) {
            System.out.println(city);
        }
        //自己写一遍试一试
        List<String> city1 = map.get("河北省");
        for (String chshi : city1) {
            System.out.println(chshi);
        }


        System.out.println("---------foreach循环遍历map---------------");
        map.forEach((p, c) -> {
            System.out.println(p + "----->" + c);
        });
        //自己写一遍试一试
        map.forEach(new BiConsumer<String, List<String>>() {
            @Override
            public void accept(String s, List<String> strings) {
                System.out.println(s+strings);
            }
        });


        System.out.println("------------------自己试一试集合嵌套----------------");
        Map<String,ArrayList<String>> zeng = new HashMap<>();     //自己写一遍试一试
        ArrayList<String> city = new ArrayList<>();
        city.add("曾季洪牛逼，曾季洪大牛逼");
        zeng.put("曾季洪",city);
        System.out.println(zeng);

    }
}
